This invention relates, in general, to database calls, and in particular, to distributing queries of database calls received at a bridge in a common interface language to one or more query engines of a plurality of query engines.
One common interface language is the Open Database Connectivity (ODBC) framework, which provides Application Programming Interfaces (APIs) for using database servers, without tying an application to a particular database server from a specific vendor. The designers of the ODBC interface aimed to make it independent of programming languages, database systems, and operating systems. In other words, an application can, for the most part, be written without an a priori knowledge of which specific database server is going to be used. Furthermore, as the application evolves, the original database server can be replaced by another one without requiring that the application source code be modified in any way. The fundamental idea behind this transparency lies in writing the application such that all database interactions are made via ODBC calls, by making use of service APIs whose implementation is customized by the different database vendors providing ODBC-compliant relational database management systems.
An application that makes use of ODBC interfaces is usually statically or dynamically linked against an ODBC driver, which in turn converts an application query into a representation understood by the database server. The driver also converts the query results obtained from the database server into one or more result sets. These result sets are then processed via other ODBC interfaces and, finally, the actual query results are returned to the application.
As indicated, when an ODBC driver receives queries, it sends them to a database server. As the data volume increases, application slowdown might occur, as database operations become a bottleneck. In such cases, the database server might become overloaded and the application might cease to satisfy customer requirements on response time, latency, data volume, among others, potentially violating quality of service agreements.